- Il assure la liaison entre le Central est les différents collecteurs avec des connexions de type ZeroMQ.
- Il pousse les configurations dans les collecteurs avec le même type de connexion.
- Il permet l'utilisation des API V2 avec le protocole HTTP.
- Il permet de réaliser des tâches de type cron.
- il gère les actions de l'IHM.
Les bases
Nous découvrirons les fonctions de bases et son fonctionnement. Nous verrons aussi des astuces de débogage et de vérifications de logs.
Fonctionnement de Centreon-Gorgone sur un Central.
Le gestionnaire de tâches Centreon-Gorgone utilise un démon appelé gorgoned. Il a aussi un utilisateur dédié centreon-gorgone. Le démon utilise des fichiers de configuration au format yaml. Ci-dessous, le schéma de la configuration de Centreon-Gorgone.
Au démarrage, le démon va lire le premier fichier config.yaml qui indique le dossier ou se trouve les fichiers de configuration de Gorgone. Ce fichier ne devra pas être modifié. Dans le dossier config.d, vous devriez avoir au moins deux fichiers 30-centreon.yaml et 40-gorgoned.yaml. Les fichiers 31-centreon-api.yaml et 41-service-discovery.yaml seront nécessaire pour le module autodiscovery. Et enfin le dossier /etc/centreon-gorgone/cron.d contiendra les configurations cron exécutées par Centreon-Gorgone.
Vérification du fonctionnement
Pour vérifier le bon fonctionnement, lancez la commande suivante :
systemctl status gorgoned
La commande liste tous les modules chargés en fonction des fichiers de configuration. Voici les premières informations du fichier de log /var/log/centreon-gorgone/gorgoned.log.
Initialisation clé privé/publique
2021-01-14 14:03:39 - INFO - [core] Initialize server keys 2021-01-14 14:03:39 - INFO - [core] Private key file '/var/lib/centreon-gorgone/.keys/rsakey.priv.pem' loaded 2021-01-14 14:03:39 - INFO - [core] Public key file '/var/lib/centreon-gorgone/.keys/rsakey.pub.pem' loadedChargement des modules
2021-01-14 14:03:39 - INFO - [core] Module 'httpserver' is loading 2021-01-14 14:03:39 - INFO - [core] Module 'httpserver' is loaded 2021-01-14 14:03:39 - INFO - [core] Module 'action' is loading 2021-01-14 14:03:39 - INFO - [core] Module 'action' is loaded 2021-01-14 14:03:39 - INFO - [core] Module 'cron' is loading 2021-01-14 14:03:39 - INFO - [core] Module 'cron' is loaded 2021-01-14 14:03:39 - INFO - [core] Module 'nodes' is loading 2021-01-14 14:03:39 - INFO - [core] Module 'nodes' is loaded 2021-01-14 14:03:39 - INFO - [core] Module 'proxy' is loading 2021-01-14 14:03:39 - INFO - [core] Module 'proxy' is loaded 2021-01-14 14:03:39 - INFO - [core] Module 'legacycmd' is loading 2021-01-14 14:03:39 - INFO - [core] Module 'legacycmd' is loaded 2021-01-14 14:03:39 - INFO - [core] Module 'engine' is loading 2021-01-14 14:03:39 - INFO - [core] Module 'engine' is loaded 2021-01-14 14:03:39 - INFO - [core] Module 'statistics' is loading 2021-01-14 14:03:39 - INFO - [core] Module 'statistics' is loaded 2021-01-14 14:03:39 - INFO - [core] Module 'autodiscovery' is loading 2021-01-14 14:03:39 - INFO - [core] Module 'autodiscovery' is loaded 2021-01-14 14:03:39 - INFO - [core] Module 'dbcleaner' is loading 2021-01-14 14:03:39 - INFO - [core] Module 'dbcleaner' is loadedLe démon est opérationnel
2021-01-14 14:03:39 - INFO - [core] Gorgoned started 2021-01-14 14:03:39 - INFO - [core] PID 1836 2021-01-14 14:03:39 - INFO - [nodes] Create module 'nodes' process 2021-01-14 14:03:39 - INFO - [dbcleaner] Create module 'dbcleaner' processfonctionnement normal, l'id n'est pas encore connu par le module
2021-01-14 14:03:39 - ERROR - [proxy] Cannot create child, need a core id 2021-01-14 14:03:39 - ERROR - [proxy] Cannot create child, need a core id 2021-01-14 14:03:39 - ERROR - [proxy] Cannot create child, need a core id 2021-01-14 14:03:39 - ERROR - [proxy] Cannot create child, need a core id 2021-01-14 14:03:39 - ERROR - [proxy] Cannot create child, need a core idles process des modules sont actifs
2021-01-14 14:03:39 - INFO - [autodiscovery] Create module 'autodiscovery' process 2021-01-14 14:03:39 - INFO - [cron] Create module 'cron' process 2021-01-14 14:03:39 - INFO - [engine] Create module 'engine' process 2021-01-14 14:03:39 - INFO - [statistics] Create module 'statistics' process 2021-01-14 14:03:39 - INFO - [action] Create module 'action' process 2021-01-14 14:03:40 - INFO - [httpserver] Create module 'httpserver' process 2021-01-14 14:03:40 - INFO - [legacycmd] Create module 'legacycmd' process 2021-01-14 14:03:40 - INFO - [core] Server accepting clientsErreur car le module payant discovery n'est pas présent
2021-01-14 14:03:40 - ERROR - [autodiscovery] -class- host discovery - cannot get platform versions - Login error [code: '401'] [message: 'Unauthorized'] 2021-01-14 14:03:40 - INFO - [proxy] Create module 'proxy' child process for pool id '1' 2021-01-14 14:03:40 - INFO - [proxy] Create module 'proxy' child process for pool id '2' 2021-01-14 14:03:40 - INFO - [proxy] Create module 'proxy' child process for pool id '3' 2021-01-14 14:03:40 - INFO - [proxy] Create module 'proxy' child process for pool id '4' 2021-01-14 14:03:40 - INFO - [proxy] Create module 'proxy' child process for pool id '5' 2021-01-14 14:03:40 - INFO - [core] Setcoreid changed 1Les "cron" sont créés
2021-01-14 14:03:40 - INFO - [cron] Adding cron definition 'broker_stats' 2021-01-14 14:03:40 - INFO - [cron] Adding cron definition 'engine_stats'Ce message (première ligne) n'aura de sens que pour les architectures distribuées
2021-01-14 14:04:00 - INFO - [proxy] Send pings 2021-01-14 14:04:40 - ERROR - [autodiscovery] -class- host discovery - cannot get platform versions - Login error [code: '401'] [message: 'Unauthorized']Lancement des job de statistiques
2021-01-14 14:05:00 - INFO - [cron] Launching job 'broker_stats' 2021-01-14 14:05:00 - INFO - [cron] Launching job 'engine_stats' 2021-01-14 14:05:00 - INFO - [statistics] Collecting Engine statistics from target '1' 2021-01-14 14:05:20 - INFO - [proxy] Send pings 2021-01-14 14:05:40 - ERROR - [autodiscovery] -class- host discovery - cannot get platform versions - Login error [code: '401'] [message: 'Unauthorized'] 2021-01-14 14:06:40 - ERROR - [autodiscovery] -class- host discovery - cannot get platform versions - Login error [code: '401'] [message: 'Unauthorized'] 2021-01-14 14:06:40 - INFO - [proxy] Send pings
Si la commande systemctl status gorgoned retourne ceci, il faudra vérifier la configuration.
systemctl status gorgoned
● gorgoned.service - Centreon Gorgone
Loaded: loaded (/etc/systemd/system/gorgoned.service; enabled; vendor preset: disabled)
Active: active (running) since jeu. 2021-01-14 13:58:46 CET; 4s ago
Main PID: 1741 (perl)
CGroup: /system.slice/gorgoned.service
└─1741 /usr/bin/perl /usr/bin/gorgoned --config=/etc/centreon-gorgone/config.yaml --logfile=/var/log/centreon-gorgone/gorgoned.log --severity=info
De plus, il existe une base de données SQLite dédié au démon gorgoned. Cette base se trouve dans le dossier /var/lib/centreon-gorgone et se nomme history.sdb. Elle conserve les log dans la table gorgone_history.
[root@centreon2010 ~]# sqlite3 /var/lib/centreon-gorgone/history.sdb SQLite version 3.7.17 2013-05-20 00:56:22 Enter ".help" for instructions Enter SQL statements terminated with a ";" sqlite>select * from gorgone_history; … .exit
Si vous n'utilisez pas le module payant discovery, je vous conseille de désactiver cette fonctionnalité en renommant les deux fichiers de configuration
mv 31-centreon-api.yaml 31-centreon-api.old
mv 41-autodiscovery.yaml 41-autodiscovery.old
Redémarrez le service
systemctl restart gorgoned
Mode debug
Pour activer le mode Debug afin de rechercher l'explication d'un dysfonctionnement, le plus simple est d'utiliser la ligne de commande. Modifiez la configuration du démon.
version CentOS
sed -i -e "s/info/debug/g" /etc/sysconfig/gorgonedversion Debian
sed -i -e "s/info/debug/g" /etc/default/gorgonedRelancez le processus
systemctl restart gorgoned
Pour visualiser en temps réel les logs du démon gorgoned, ouvrez un second terminal et lancez la commande suivante (tail -f pour Debian) :
tailf /var/log/centreon-gorgone/gorgoned.log
Vous obtiendrez plus d'informations :
2021-01-14 17:00:01 - DEBUG - [statistics] Writing in file '/var/lib/centreon/nagios-perf//perfmon-1/nagios_cmd_buffer.rrd' 2021-01-14 17:00:01 - DEBUG - [listener] trigger event '0b9849c7861db1aacad624e00e7fea960bd1942cebe9906262af5a4db9ad1d76b3f6e177abf1b1a5398304c9963abac5b00bff4103a0b5d8cf536c6f13f1a1a1-1' 2021-01-14 17:00:01 - DEBUG - [core] Message received - [STATISTICSLISTENER] [0b9849c7861db1aacad624e00e7fea960bd1942cebe9906262af5a4db9ad1d76b3f6e177abf1b1a5398304c9963abac5b00bff4103a0b5d8cf536c6f13f1a1a1-1] [] { "code": 2, "data": {"message":"commands processing has finished successfully"} } 2021-01-14 17:00:01 - DEBUG - [statistics] Writing in file '/var/lib/centreon/nagios-perf//perfmon-1/nagios_active_service_latency.rrd' 2021-01-14 17:00:01 - DEBUG - [statistics] Writing in file '/var/lib/centreon/nagios-perf//perfmon-1/nagios_active_service_execution.rrd' 2021-01-14 17:00:01 - DEBUG - [statistics] Writing in file '/var/lib/centreon/nagios-perf//perfmon-1/nagios_active_service_last.rrd' 2021-01-14 17:00:01 - DEBUG - [statistics] Writing in file '/var/lib/centreon/nagios-perf//perfmon-1/nagios_services_states.rrd' 2021-01-14 17:00:01 - DEBUG - [statistics] Writing in file '/var/lib/centreon/nagios-perf//perfmon-1/nagios_active_host_latency.rrd' 2021-01-14 17:00:01 - DEBUG - [statistics] Writing in file '/var/lib/centreon/nagios-perf//perfmon-1/nagios_active_host_execution.rrd' 2021-01-14 17:00:01 - DEBUG - [statistics] Writing in file '/var/lib/centreon/nagios-perf//perfmon-1/nagios_active_host_last.rrd' 2021-01-14 17:00:01 - DEBUG - [statistics] Writing in file '/var/lib/centreon/nagios-perf//perfmon-1/nagios_hosts_states.rrd' 2021-01-14 17:00:01 - DEBUG - [statistics] Event: [STATISTICSLISTENER] [0b9849c7861db1aacad624e00e7fea960bd1942cebe9906262af5a4db9ad1d76b3f6e177abf1b1a5398304c9963abac5b00bff4103a0b5d8cf536c6f13f1a1a1-1] [] { "code": 2, "data": {"message":"commands processing has finished successfully"} }
Dans cet exemple, on visualise le mécanisme des statistiques du moteur (notez les reliquats historiques de Nagios 😀)
2021-01-14 17:18:11 - DEBUG - [legacycmd] Processing file '/var/lib/centreon/centcore//external-cmd-1610641090.8547.cmd_read' 2021-01-14 17:18:11 - INFO - [legacycmd] Handling command 'EXTERNALCMD', Target: '1', Parameters: '[1610641090] SCHEDULE_FORCED_SVC_CHECK;central;Ping;1610641090' 2021-01-14 17:18:11 - DEBUG - [core] Message received - [ENGINECOMMAND] [15edaba7f7bb5bf19aeee16bbd7ead19633b1029e0f36f0679a273affddb7cea7811055ea5b50cf87809d7f4e056bab3efbb50ae5419de5894fb56666b8c0512] [1] {"content":{"command_file":"/var/lib/centreon-engine/rw/centengine.cmd","commands":["[1610641090] SCHEDULE_FORCED_SVC_CHECK;central;Ping;1610641090"]}} 2021-01-14 17:18:11 - DEBUG - [engine] Event: [ENGINECOMMAND] [15edaba7f7bb5bf19aeee16bbd7ead19633b1029e0f36f0679a273affddb7cea7811055ea5b50cf87809d7f4e056bab3efbb50ae5419de5894fb56666b8c0512] [] {"content":{"command_file":"/var/lib/centreon-engine/rw/centengine.cmd","commands":["[1610641090] SCHEDULE_FORCED_SVC_CHECK;central;Ping;1610641090"]}} 2021-01-14 17:18:11 - DEBUG - [engine] Create sub-process 2021-01-14 17:18:11 - DEBUG - [legacycmd] Event: [ACK] [15edaba7f7bb5bf19aeee16bbd7ead19633b1029e0f36f0679a273affddb7cea7811055ea5b50cf87809d7f4e056bab3efbb50ae5419de5894fb56666b8c0512] {"data":null,"code":0} 2021-01-14 17:18:11 - INFO - [engine] Processing external command '[1610641090] SCHEDULE_FORCED_SVC_CHECK;central;Ping;1610641090' 2021-01-14 17:18:11 - DEBUG - [core] Message received - [PUTLOG] [15edaba7f7bb5bf19aeee16bbd7ead19633b1029e0f36f0679a273affddb7cea7811055ea5b50cf87809d7f4e056bab3efbb50ae5419de5894fb56666b8c0512] [] {"etime":1610641091,"data":{"request_content":{"command_file":"/var/lib/centreon-engine/rw/centengine.cmd","commands":["[1610641090] SCHEDULE_FORCED_SVC_CHECK;central;Ping;1610641090"]},"message":"commands processing has started"},"instant":null,"token":"15edaba7f7bb5bf19aeee16bbd7ead19633b1029e0f36f0679a273affddb7cea7811055ea5b50cf87809d7f4e056bab3efbb50ae5419de5894fb56666b8c0512","code":0} 2021-01-14 17:18:11 - DEBUG - [core] Received SIGCLD signal (pid: 14848) 2021-01-14 17:18:11 - DEBUG - [core] Message received - [PUTLOG] [15edaba7f7bb5bf19aeee16bbd7ead19633b1029e0f36f0679a273affddb7cea7811055ea5b50cf87809d7f4e056bab3efbb50ae5419de5894fb56666b8c0512] [] {"etime":1610641091,"data":{"command":"[1610641090] SCHEDULE_FORCED_SVC_CHECK;central;Ping;1610641090","message":"command has been submitted"},"instant":null,"token":"15edaba7f7bb5bf19aeee16bbd7ead19633b1029e0f36f0679a273affddb7cea7811055ea5b50cf87809d7f4e056bab3efbb50ae5419de5894fb56666b8c0512","code":2} 2021-01-14 17:18:11 - DEBUG - [core] Message received - [PUTLOG] [15edaba7f7bb5bf19aeee16bbd7ead19633b1029e0f36f0679a273affddb7cea7811055ea5b50cf87809d7f4e056bab3efbb50ae5419de5894fb56666b8c0512] [] {"etime":1610641091,"data":{"message":"commands processing has finished"},"instant":null,"token":"15edaba7f7bb5bf19aeee16bbd7ead19633b1029e0f36f0679a273affddb7cea7811055ea5b50cf87809d7f4e056bab3efbb50ae5419de5894fb56666b8c0512","code":2}
Autre exemple, le fonctionnement d'une action de vérification (check) sur un service. Le serveur apache écrit la commande dans le fichier /var/lib/centreon/centcore//external-cmd. Celui-ci est lu par le module legacycmd et va l'envoyer dans le fichier /var/lib/centreon-engine/rw/centengine.cmd. Le moteur du Central interprétera cette commande et lancera un contrôle manuel du service. Voici le fichier de log du moteur correspondant :
[1610641092] [1328] EXTERNAL COMMAND: SCHEDULE_FORCED_SVC_CHECK;central;Ping;1610641090
Pour revenir au mode normal, effectuez ces commandes :
version CentOS
sed -i -e "s/debug/info/g" /etc/sysconfig/gorgonedversion Debian
sed -i -e "s/debug/info/g" /etc/default/gorgonedRelancez le processus
systemctl restart gorgoned
Exemples de fonctionnement pour un Central
Centreon-Gorgone doit fonctionner pour pouvoir exporter la configuration (mécanisme sudo pour le rechargement et le redémarrage du moteur), mais aussi pour la commande des actions de la page Resource Status et aussi pour les statistiques. Ci-dessous deux graphiques décrivant les principales actions des processus.
Nous verrons bientôt le fonctionnement avec une architecture distribuée.